import { EnumAnimate, EnumMultiTabMode, EnumNavMode, EnumNavTheme } from '@/enum'

export interface ThemeSettings {
  /** 是否为深色模式 */
  darkMode: boolean
  /** 主题颜色 */
  themeColor: string
  /** 主题颜色列表 */
  themeColorList: string[]
  /** 其他颜色 */
  otherColor: OtherColor
  /** 导航风格(包括位置和颜色) */
  navStyle: NavStyle
  /** 头部样式 */
  headerStyle: HeaderStyle
  /** 菜单样式 */
  menuStyle: MenuStyle
  /** 多标签样式 */
  multiTabStyle: MultiTabStyle
  /** 面包屑样式 */
  crumbsStyle: CrumbsStyle
  /** 页面样式 */
  pageStyle: PageStyle
}

export type NavModeType = keyof typeof EnumNavMode
type NavThemeType = keyof typeof EnumNavTheme

interface NavStyle {
  mode: NavModeType // 导航栏位置
  theme: NavThemeType // 导航栏颜色
}

/** 顶部栏配置 */
interface HeaderStyle {
  /** 高度 */
  height: number
  /** 背景颜色 */
  bgColor: string
  /** 是否固定顶部，放在最上方 */
  fixed: boolean
  /** 是否显示重载按钮 */
  showReload: boolean
}

/** 菜单栏配置 */
interface MenuStyle {
  /** 菜单宽度 */
  width: number
  /** 混合菜单的宽度 */
  mixWidth: number
  /** 菜单折叠时宽度 */
  collapsedWidth: number
  /** 是否固定菜单 */
  fixed: boolean
  /** 是否分割菜单 */
  splitMenu: boolean
}

export type MultiTabMode = keyof typeof EnumMultiTabMode

export interface MultiTabModeInfo {
  value: MultiTabMode
  label: EnumMultiTabMode
}

/** 多标签格式配置 */
interface MultiTabStyle {
  /** tab 标签的高度 */
  height: number
  /** 是否多标签可见 */
  visible: boolean
  /** 背景颜色 */
  bgColor: string
  /** 多页签模式 */
  mode: MultiTabMode
  /** 多页签模式列表 */
  modeList: MultiTabModeInfo[]
}

interface CrumbsStyle {
  /** 面包屑是否可见 */
  visible: boolean
  /** 是否显示图标 */
  showIcon: boolean
}

/** 动画类型 */
export type AnimateType = keyof typeof EnumAnimate

export interface AnimateTypeInfo {
  value: AnimateType
  label: EnumAnimate
}

/** 页面配置 */
interface PageStyle {
  /** 页面是否开启动画 */
  animate: boolean
  /** 动画类型 */
  animateType: AnimateType
  /** 动画类型列表 */
  animateTypeInfos: AnimateTypeInfo[]
}

interface OtherColor {
  info: string
  success: string
  warning: string
  error: string
}
